﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ClienteWinMGI.Logica;
using ComunesMGI.DataTypes;
using ComunesMGI.Mensajes;

namespace ClienteWinMGI.Presentacion
{
    public partial class DesasociarIncidenteWP : Form
    {
        private int _idWP;
        private int _idSis;
        private List<DataIncidente> _listaIncidentes;

        public DesasociarIncidenteWP(int idWP, int idSis)
        {
            InitializeComponent();
            ClearValidator();
            this._idWP=idWP;
            this._idSis = idSis;
            CargarIncidentes();
        }


        private void ClearValidator()
        {
            imgValidator.Visible = false;
            lblValidator.Visible = false;
        }

        private void ShowValidator(string textoValidator)
        {
            imgValidator.Visible = true;
            lblValidator.Visible = true;
            lblValidator.Text = textoValidator;
        }
        private void CargarIncidentes()
        {
            IIncidentes ii = LogicaFactory.getInstance().getIIncidentes();
            _listaIncidentes=ii.GetIncidentesWP(_idSis, _idWP);

            foreach (DataIncidente di in _listaIncidentes)
            {
                checkLBInc.Items.Add(di.Descripcion);
            }
        
        }
        private void lblSeleccione_Click(object sender, EventArgs e)
        {

        }

       

        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnDesasociar_Click(object sender, EventArgs e)
        {
            try
            {
                if (checkLBInc.CheckedItems.Count!=0)
                {
                    List<int> incDesasociar = new List<int>();
                    //cargo los incidentes seleccionados para desasociar en una lista

                    foreach (object itemCheck in checkLBInc.CheckedItems)
                    {
                        DataIncidente actual = _listaIncidentes.First(di => di.Descripcion == itemCheck.ToString());
                        incDesasociar.Add(actual.IdIncidente);

                    }

                    IIncidentes ii = LogicaFactory.getInstance().getIIncidentes();
                    ii.DesasociarIncidentesWP(_idWP, incDesasociar);
                    MsgNotificacion notif = new MsgNotificacion("Desasociacion exitosa", "", "Se han desasociado los incidentes con éxito");
                    notif.ShowDialog();
                    this.Close();
                }
                else
                {
                    ShowValidator("Debe seleccionar al menos un incidente");

                }
            }
            catch (Exception ex)
            {
                MsgError err = new MsgError("Error", "", ex.Message);
                err.ShowDialog();
            }

        }

        private void checkLBInc_SelectedIndexChanged(object sender, EventArgs e)
        {
            ClearValidator();
        }
    }
}
